﻿#pragma warning(disable: 4996)
#pragma warning(disable: 6031)

/*
字符串比对（10分）
题目内容：
题目说起来很简单，你会读到两个字符串，每个字符串占据一行，每个字符串的长度均小于10000字符，而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置，输出这些位置，如果找不到，则输出-1。

注意，第一个字符的位置是0。
注意，第一个字符串在第二个字符串中的位置可能不止一处。
注意，字符串中可能含有空格。
注意，两个字符串的长度一定大于0。

输入格式:
两个字符串，一行一个。

输出格式：
第一个字符串在第二个字符串中出现的位置，按照从小到到的顺序排列，每个数字后面有一个空格。
如果在第二个字符串中找不到第一个字符串，则输出-1。

输入样例：
abba
ababbba abbabbabbabbaacc

输出样例：
8 11 14 17
*/

#include <stdio.h>
#define MAXSIZE 100000

char a[MAXSIZE] = { 0 };
char b[MAXSIZE] = { 0 };

char* match(char* src, char* find)
{
	char* a = src;
	while (*a && *find && *a == *find) {
		a++;
		find++;
	};
	if (*find)
		return NULL;
	return src;
}

void solve()
{
	char* p = b;
	char* f0 = NULL;
	while (*p)
	{
		char* find = match(p, a);
		if (find) {
			f0 = find;
			printf("%d ", find - b);
		}
		++p;
	}
	if (f0 == NULL)
		printf("-1\n");
}

void read_data() 
{
	gets(a);
	gets(b);
}

int main()
{
	freopen("D:/Develop/GitRepos/MOOC/浙江大学/数据结构/201906/DataStructure/MOOC_zju_C2_1911/oj_01.txt", "r", stdin);
	read_data();
	solve();
	return 0;
}

